-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
User IndexedDB #1230
User IndexedDB #1230
Conversation
I've added an update layer method to the userIDB module. This method updates the layer key values in the layer json with current values from the mapview.layers object. |
export async function openDB(store) { | ||
export async function openDB(_store) { | ||
|
||
const store = _store.toString() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lekker!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Quality Gate passedIssues Measures |
The userIDB plugin is mainly for testing the interface which otherwise would only be accessible through script. The title for the button will now be assigned from the plugin.title. There will be an alert after the update statement. The plugin will warn and short-circuit if there is no mapp.user.email which is required for the IDB. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks all good to me!
Keen to see further implementation.
This indexedDB implementation allows to store, get, and update a locale object from the 'locales' object store in a user indexedDB.
https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Basic_Terminology
userIndexedDB
methods are added to mapp.utils.userIndexedDB.open(store)
will open a DB with following name${mapp.user.email} - ${mapp.user.title}
. The database will be created if it not already exists. The creation will trigger theonupgradeneeded
event which will create thestore
object store in the database. This will trigger theonsucess
event which checks whether the requestedstore
exists in the user indexedDB.The
process.env.TITLE
will be added to the user object in the cookie module.The
user.title
is required to generate a unique indexedDB for each user[email]/instance[title].All objectstores use the key value as keypath for object indices.
userIndexedDB.add(store, obj)
will add the keyed object to the named store. The key will be returned on success. Adding the same keyed object twice will result in an error.userIndexedDB.get(store, key)
will get the keyed object from the named store.userIndexedDB.put(store, obj)
will put the keyed object to the named store. This will override the existing keyed object. Updates work by replacing (put) the same keyed object into an user indexedDB.userIndexedDB.deleteDB()
will delete the user indexedDB.Adding the url parameter
useridb=true
will ask the default script to get the keyed locale from the user indexedDB. The userLocale will be assigned as locale if available.The
userIDB
plugin adds a button to put [update] the locale in the user indexedDB.This can be tested but updating the mapview.locale in another plugin, e.g. dark_mode
The enabled status will be stored with the local applying the setting when the locale is loaded with the
useridb=true
url param.